﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;

namespace Thor.Domain
{
    public interface ICalendarProvider
    {
        /// <summary>
        /// Authenticates the specified credentials against the calendar provider.
        /// </summary>
        /// <param name="credential"></param>
        /// <param name="serviceUrl">Url to the service providing calendar data.</param>
        /// <returns></returns>
        AuthenticationResult Authenticate(NetworkCredential credential, string serviceUrl);

        /// <summary>
        /// Gets data for a specific calendar.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Calendar GetCalendar(CalendarRequest request);

        /// <summary>
        /// Books an appointment.
        /// </summary>
        /// <param name="appointmentRequest"></param>
        AppointmentResponse BookAppointment(AppointmentRequest appointmentRequest);
    }
}
